Method of controlling an Internet browser interface and a controllable browser interface

ABSTRACT

The present invention is directed to a method of dynamically controlling and displaying an Internet browser interface, and to a dynamically controllable Internet browser interface. In accordance with the present invention, a browser interface may be customized using a controlling software program that may be provided by an Internet content provider, an ISP, or that may reside on an Internet user&#39;s computer. The controlling software program enables the Internet user, the content provider, or the ISP to customize and control the information and/or functionality of a user&#39;s browser and browser interface.

FIELD OF THE INVENTION

The present invention is directed to computer display interfaces and,more particularly, to a method of dynamically controlling an Internetbrowser interface and a dynamically controllable browser interface.

BACKGROUND OF THE INVENTION

When accessing the Internet (i.e., the worldwide web, the web, etc.), anInternet user typically executes, via a computer, a browser softwareprogram such as, for example, Netscape Navigator™ or Microsoft InternetExplorer™. The browser program (i.e., a browser) establishes a physicallink to the Internet (via a modem and an Internet Service Provider(ISP), for example) and also provides a textual and graphical userinterface, i.e., a browser interface, having a predetermined look andfunctionality, neither of which can currently be significantly changedby the Internet user. Thus, the browser interface remains relativelystatic as the Internet user navigates the Internet and moves fromapplication to application or HTML (Hyper-text Mark-up Language) page toHTML page.

Limited control of the browser interface is currently available via anexecutable software program that may, for example, add functionalbuttons to the interface. However, the additional functionality is addedto the browser interface when the browser is initially activated andremains static thereafter. Thus, it is not possible for a browserdisplaying a browser interface modified as just-described to dynamicallydownload information from an Internet site and customize itself, eitherwhen the browser is initiated or as the users traverses the Internet.Such a modified browser interface also does not provide access to thevarious browser Application Programming Interfaces (APIs) for Plug-insand interfaces.

The proliferation of Internet sites makes it increasingly difficult forcontent providers (i.e., owners of Internet sites) to maximize the timean Internet user spends at a particular Internet site. It is, of course,desirable for a content provider to be able to maximize that time anInternet user spends at that provider's Internet site, or to ensure thatan Internet user returns to the content provider's site; this beinggenerally referred to in the art as stickiness. It is also desirable tomaximize the number of Internet users accessing a content provider'ssite. Briefly stated, an Internet content provider wants to attract amaximum number of Internet users to that provider's Internet site, andto maximize the amount of time those Internet users remain at that site;neither of which is possible using current Internet browsers.

SUMMARY OF THE INVENTION

The present invention is directed to a method of dynamically controllingan Internet browser interface and to a dynamically controllable browserinterface. The present invention is also directed to a method ofincreasing the number of times an Internet user accesses a predeterminedInternet site, and to a method of increasing the amount of time anInternet user spends at a predetermined Internet site.

As used herein, the term controlling and controllable refer to, by wayof non-limiting example, adding to, removing from, and modifying anInternet browser interface. An Internet browser interface, as referredto herein, means the visual or aural presentation presented to a browseruser, and via which a user interacts with the browser. The termcustomize (and variations thereof) may also be used herein to describethe controllability provided in accordance with the present invention.As used herein, the term dynamically controlling (and variationsthereof) refers to a method by which a part of an Internet browserinterface (i.e., an interface object) may be displayed and periodicallychanged or updated while a browser displaying the interface object isactivated.

A browser, as used herein, is given its general, art recognized meaning,and generally refers to a software program that provides an interface tothe World Wide Web or Internet. The browser enables an Internet user tonavigate the Internet and establish a connection to various Internetsites and view the web page(s) provided at the various Internet sites bycontent providers. A browser is specifically capable of calling, i.e.loading onto the Internet user's computer, an ActiveX control or Plug-invia an Internet site. The browser also enables an Internet user tonavigate between and among Internet sites, i.e., to surf the web. Thebrowser provides a browser interface to the Internet user that isformatted by the provider of the browser software program. The browserinterface typically defines the layout (e.g., color, size, number andlocation) and functionality provided by the browser to the Internetuser. The browser interface may comprise a first parent window thattypically defines the general size, color, and layout of the browserinterface and includes window control buttons (e.g., minimize, close,etc.). The browser interface may also comprise a second parent window (achild to the first parent window), and one or more windows dependentfrom the second parent (i.e., children). The second parent and itsdependent windows may provide, for example, various information (e.g.,advertisements, coupons, news, HTML links, etc.) and functionality(i.e., toolbars, pull-down menus, Plug-ins, applications, etc.) to theInternet user.

An ActiveX control, as used herein, refers to a tool for linking desktopapplications for the Internet and is based on art recognized,Microsoft-developed specifications. A Plug-in, as used herein, refers toa type of program developed for use with Netscape browsers and thatintegrates with a larger application (e.g., a browser software program)to add a specific functionality or capability to that larger program. AnActiveX control and a Plug-in as described above and as referred toherein may be used with any Internet browser.

As used herein, the term Internet site refers to a location (i.e., node)on the Internet defined by an Internet address or URL (uniform oruniversal resource locator). As used herein, the term Internet web pagerefers to a collection of hypertext markup language (HTML) commandsprovided at an Internet site and that provide formatting information forthe text, graphics, and functionality to create a hypertext documentthat may be displayed on an Internet user's computer display via abrowser. For example, an Internet user enters a URL to establish aconnection to an Internet site, and that Internet site provides HTMLcommands to the user's browser to enable display of that Internet site'sweb page on the user's computer display. The browser interpretshypertext markup language (HTML) commands embedded in a web page anduses the HTML commands to format the text and graphics for that webpage.

The present invention provides advantages to an Internet user, anInternet content provider (i.e., an owner of an Internet site), and toan Internet Service Provider (ISP). For an Internet user, the presentinvention provides a method of dynamically controlling or customizingthat user's Internet browser interface. The Internet user may nowcustomize the browser interface so that each time the user accesses theInternet using a browser, user-defined information and/or functionality(also collectively referred to herein as information) will be displayedwith the browser interface. For example, the user may include bookmarks,address and phone books, personal financial information, personalizednews, and various functionality such as is available via ActiveX controland Plug-ins.

In addition, if an Internet user has an account with a content provider,that user's specific account information (e.g., investment portfolio,news headlines, bookmarks, address book, etc.) may now be dynamicallydisplayed with the browser interface by the browser. Currently, anInternet user can only access that user's specific account informationwhile connected to the content provider's Internet site. The user mustreturn to the content provider's site to receive updated accountinformation. The account information is not displayed with the browserinterface once user leaves that Internet site. The present inventionprovides a method of dynamically controlling and a dynamicallycontrollable browser interface that enables an Internet user to displaywith the browser interface and continuously update information and/orfunctionality specific to that user.

For a content provider, the present invention ensures that an Internetuser (via a browser) automatically establishes a connection to thatcontent provider's Internet site every time that user accesses theInternet using a browser. Thus, as soon as an Internet user causes abrowser to execute (by selecting a browser icon, for example), thebrowser automatically establishes a connection to the content provider'sInternet site to load that user's customized browser interfaceinformation. The present invention may also periodically andautomatically cause the user's browser to connect to the contentprovider's Internet site while the browser is active, i.e. while theuser surfs the web. In one embodiment, the content provider may providean Internet user with access to a program for controlling the browserinterface. Once the Internet user has accessed that controlling programto customize that user's browser interface, a connection to that contentprovider may be automatically established by that user's browser everytime that user accesses the Internet. Thus, and in contrast to currentlyavailable browsers which establish a connection to an Internet site onlywhen the user enters a URL (or otherwise positively acts to cause aconnection to be established such as, for example, by selecting a linkor banner advertisement), the present invention automaticallyestablishes a connection to the content provider when the browser isinitiated, independent of any home web page selection pre-programmedinto the browser, whether by the Internet user or browser vendor. Oncethat initial connection is established, the content provider may loaduser-specific information and/or functionality to the Internet user'scomputer for display with that user's browser interface.

In addition, the content provider can also periodically cause thebrowser to automatically reconnect to that content provider's Internetsite to update, download new, or otherwise communicate informationand/or functionality for the Internet user's browser interface. Forexample, if an Internet user subscribes to an email service of thecontent provider, email messages for that Internet user received by thecontent provide may be automatically communicated to the Internet usereven though the user is “surfing” elsewhere. When the user's browserinitially establishes a connection to the content provider's Internetsite upon execution of that user's browser, the information communicatedby the content provider to the Internet user includes instructions forthe browser to periodically reconnect to the content provider's Internetsite. Thus, regardless of the number of Internet sites the useraccesses, and regardless of the particular Internet site currentlyaccessed by a user, a connection back to the content provider's Internetsite will be automatically established at intervals determined by thecontent provider; those reconnections being transparent to the Internetuser except when the user receives a notification from the contentprovider (i.e., new mail has arrived). Thus, the browser interface maybe dynamically controlled as the Internet user surfs the web. For anISP, the benefits are at least as great as for a content provider.

Initially, the browser interface for an Internet user must be customizedusing a software program that may be provided by the content provider orISP, or that may be available on the user's computer. The softwareprogram, referred to hereinafter as a controlling program or a programfor controlling (and other variations thereof), changes the manner inwhich the user's browser functions. More specifically, the controllingprogram downloads or creates a library file on the Internet user'scomputer. The library file may be, for example, a Dynamic Link Library(DLL) (for a Windows operating system) that creates a shell (orplurality of shells) within the browser and within which variousinformation and/or functionality may be loaded as an ActiveX control orPlug-in. The library file includes ActiveX control or Plug-infunctionality that defines an interface object added to the browserinterface in accordance with the present invention. When an Internetuser activates a browser, the library file is opened and the ActiveXcontrol or Plug-in code contained within that file is made available tothe browser and incorporated into the browser interface, thus causingthe interface object to be displayed with the browser interface. Thelibrary file, and consequently, the shell (or shells), remain open aslong as the browser is activated, generally as long as the user issurfing the web. Thus, the information and/or functionality forcustomizing the browser interface and loaded in the shell remain activeeven as the user moves from Internet site to Internet site. When used inthis context herein, the terms information and functionality refer toany information, data, and/or software-driven functionality that can becontained in or part of the library file.

The library file also causes the browser to establish a connection tothe content provider's Internet site when the browser is initiallyactivated by the user. The content provider's Internet site will loadinformation and/or functionality for the interface object to the user'scomputer for use in the browser and for display in the browserinterface. The information and/or functionality loaded by the contentprovider may be specific to an Internet user if, for example, that userhas an account with the content provider. Alternatively, the contentprovider may load general information and/or functionality if, forexample, the Internet user does not have an account with the contentprovider (i.e., is a guest).

The present invention uses an object linking and embedding (OLE)in-process server to control the information and/or functionality of abrowser interface. Using an ActiveX control or a browser Plug-in (eachbeing referred to herein as a browser interface overlay (BIO) Library)contained in a library file, virtually any information and/orfunctionality available with an ActiveX control or Plug-in may be addedto a browser interface using the present invention. The library file(via the BIO Library) thus includes the code required to customize,i.e., add, remove and/or modify, the browser interface.

Once an Internet user has accessed the controlling program andcustomized the operation of that user's browser, the customized browserinterface is displayed when the browser is activated. In contrast toprior art browser modification methods, the present invention provides amethod and browser interface that may be dynamically controlled. Updatedor changed information and/or functionality may be communicated to thebrowser and displayed in the browser interface as the Internet usersurfs the web and while maintaining the customized information and/orfunctionality of the browser interface. Thus, an Internet user mayautomatically receive up-to-date information such as, for example, stockquotes, email, new headlines, at that user's browser interface, at anyInternet site and as long as the user is surfing the web using thebrowser.

Other objects and features of the present invention will become apparentfrom the following detailed description, considered in conjunction withthe accompanying drawing figures. It is to be understood, however, thatthe drawings are designed solely for the purpose of illustration and notas a definition of the limits of the invention, for which referenceshould be made to the appended claims.

BRIEF DESCRIPTION OF THE DRAWINGS

In the drawing figures, which are merely illustrative, and wherein likereference characters denote similar elements throughout the severalviews:

FIG. 1 depicts a view of a prior art Internet browser interface;

FIG. 2 depicts a view of an Internet browser interface including aninterface object in the browser toolbar in accordance with an embodimentof the present invention;

FIG. 3 depicts a view of an Internet browser interface having aninterface toolbar including interface object in accordance with anembodiment of the present invention;

FIG. 4 depicts a view of an Internet browser interface having aninterface toolbar including a plurality of interface objects inaccordance with an embodiment of the present invention;

FIG. 5 is a flow diagram of a method of controlling an Internet browserinterface in accordance with the present invention;

FIGS. 6-9 are a flow diagrams of a method of controlling and displayingan Internet browser interface in accordance with various embodiments ofthe present invention; and

FIG. 10 is a schematic block diagram of a computer connected to theInternet and upon which the present invention may be implemented.

DETAILED DESCRIPTION OF THE PRESENTLY PREFERRED EMBODIMENTS

The present invention is directed to a method of controlling anddisplaying an Internet browser interface, and to a controllable Internetbrowser interface. In accordance with the present invention, a browserinterface may be customized using a controlling software program thatmay be provided by an Internet content provider, an ISP, or that mayreside on an Internet user's computer. The controlling software programenables the Internet user, the content provider, or the ISP to customizeand control the information and/or functionality of a user's browser andbrowser interface.

Referring now to the drawings in detail, FIG. 10 is a block diagram of acomputer 50 connected to the Internet 90 and upon which the presentinvention may be implemented. Computer 50 includes an internal bus 64that facilitates communication of information (i.e., digital data)between and among the various devices of the computer 50 and that alsofacilitates communication between the computer and external devices andsystems via a communication interface 68. A processor 66 coupled to thebus 64 process information within the computer 50. The computer 50 alsoincludes a main memory 60 such as, for example, Random Access Memory(RAM) or other equivalent dynamic memory storage device, coupled to bus64 for receiving and storing instructions communicated from theprocessor 66. Main memory 60 may also be used to temporarily storevariable or other intermediate information while the processor 66executes instructions. Read-Only-Memory (ROM) 62 is also coupled to thebus 64 for storing static data and instructions for use by the processor66. Various input and output devices are provided as part of thecomputer 50, including, by way of non-limiting example, a display 54(e.g., cathode ray tube (CRT), liquid crystal display (LCD), etc.), aninput device 56 such as a keyboard, and a cursor control device 58 suchas a mouse, or trackball, for example. A data storage device 52 such as,for example, a magnetic disk drive and magnetic disk, a CD-ROM drive andCD-ROM, or other equivalent devices and data storage mediums, is coupledto the bus 64 for communication with the processor 66, main memory 60,and communication interface 68. The storage device 52 preferably has anoperating system 70 and an Internet browser software program 72 (i.e., abrowser) stored thereon. As will be discussed in greater detail below, alibrary file 74 may also be stored on the data storage device 52.

The computer 50 may connect to the Internet 90 via the communicationinterface 68 over a transmission media including, but not limited to,coaxial cable, copper wires, and fiber optical cables. Communicationbetween the computer 50 and the Internet 90 may also be via a wirelessor cellular interface. The communication interface 68 facilitatestwo-way communication between the computer 50 and another electronicdevice or system, e.g., a server computer (not shown) provided by acontent provider 100, 200.

An Internet user (not shown) using the computer 50 may gain access tothe Internet 90 by causing the browser 72 to execute, thereby opening acommunication link between the communication interface 68 of thecomputer 50 and an Internet site 130 of a content provider 100, via anInternet Service Provider (ISP) 80. The browser 72 provides, to thecomputer display 54, a browser interface 20 (see, e.g., FIG. 1) having alayout (e.g., color, size, number, location) and functionality ofwindows 30 that is predetermined in the browser 72 by the browservendor. Internet content is communicated by the content provider 100 tothe computer 50 for display in a content window 32 of the browserinterface 20.

In accordance with an embodiment of the present invention, a firstInternet content provider 100 may provide an Internet user with accessto a program 120 for controlling the browser 72 and browser interface20. When executed by the user, the controlling program 120 downloads orcreates a library file 74 such as, for example, a Dynamic Link Library(DLL), on the data storage device 52 of the Internet user's computer 50.The library file 74 preferably includes ActiveX control or Plug-infunctionality. Thereafter, when the Internet user accesses the Internetusing the browser 72, the browser 72 opens the library file 74 andpreferably automatically establishes a connection to the contentprovider's Internet site 130. The content provider, in response to theconnection established by the browser 72, loads information and/orfunctional data into a shell operating within the browser and created bythe library file 74. For example, if the user has an account with thecontent provider 100, customized information and/or functionality may beloaded into the library file 74. If the user does not have an account,more generalized (i.e., guest) information and/or functionality may beloaded.

The library file 74 essentially opens a shell (or a plurality of shells)within the browser 72 that contains the ActiveX control or Plug-in codethat may control, i.e., add, remove, and/or modify, the Internet browser72 and the browser interface 20. When loaded with the ActiveX control orPlug-in, the library file 74 preferably contains functions, objects,data, and other software, referred to generally herein as information,that may be used to control the browser 74 and browser interface 20. Thepresent invention ensures that the library file 74 (and shell) does notclose when the Internet user moves from Internet site 130 to Internetsite 230. Thus, the information and/or functionality provided via theActiveX control or Plug-in is not lost when the Internet userdisconnects from the Internet site that loaded the ActiveX control orPlug-in, and connects to another Internet site.

Referring next to FIG. 1, a prior art Internet browser interface 20having a plurality of windows, each providing various functionality tothe Internet user, is there depicted. The browser interface 20 maycomprise a first parent window 30 that typically defines the generalsize, color, and layout of the browser interface and includes windowcontrol buttons 28 (e.g., minimize, close, etc.) for that window 30. Thebrowser interface 20 may also comprise a second parent window 36 (achild to the first parent window) within the first parent window 30, andone or more child windows 38 dependent from the second parent. Thesecond parent window 36 and child windows 38 typically defineinformation and/or functionality that will assist an Internet user whenaccessing and navigating the Internet. For example, the second parent 36and its dependent windows 38 may provide toolbars, pull-down menus,Plug-ins, applications, etc.

For example, three windows 38 provided at the top (in the drawing) ofthe interface 20 define three toolbars 22, which may include a varietyof interface controls 24 such as, for example, pull-down menus,functional buttons (e.g., stop, back, forward, home, etc.), and acombination of functional buttons and windows (e.g., a search button andwindow). The uppermost toolbar 22 provides a plurality of pull-downmenus 24; the middle toolbar 22 provides a plurality of functionalbuttons 24; and the lowermost toolbar 22 provides a pull-down menu and awindow 26 (a URL address window). A content window 32 is also providedas part of the interface 20 within which content from an Internetcontent provider 100 (see, e.g., FIG. 10) may be displayed. The Internetuser may toggle any of the lower three (in the drawing) toolbars 22 onand off using a View toolbar object 24 (pull-down menu) provided in thesecond toolbar 22. However, the Internet user currently may not add,remove, or otherwise modify the browser interface 20.

An Internet browser 20 configured in accordance with various embodimentsof the present invention is depicted in FIGS. 2-4. In FIG. 2, thebrowser interface 20 includes an interface object 40 that is defined bythe ActiveX control or Plug-in loaded in the library file 74 by thecontent provider 100. The interface object 40 comprises a pull-down menu44 and is displayed in the browser toolbar 22 with the interfacecontrols (i.e., browser toolbar objects) 24 provided by the browser 72.In FIG. 3, an interface object 40 comprises an interface object toolbar42 and a pull-down menu 44 displayed as a separate window 48 within thebrowser interface 20. In FIG. 4, an interface object 40 comprises aninterface toolbar 42 including a plurality of pull-down menus 44 and asearch window 46 displayed within a separate 48 within the browserinterface 20. An interface object 40, in accordance with the variousembodiments of the present invention, may comprise virtually any type ofinformation and/or functionality available via a browser. Thus, by wayof non-limiting example, an interface object 40 may comprise a pull-downmenu, a toolbar and a pull-down menu, textual information (e.g.,advertisements, coupons, etc.), textual and/or aural information (e.g.,a textual advertisement with accompanying sound), textual, aural, and/orgraphical (animated or not) information, video, video and audio, audio,etc.

The various embodiments of the inventive Internet browser interface 20depicted by FIGS. 2-4 are merely illustrative, non-limiting examples ofthe present invention. Variations to the depicted browser interfaces 20may be possible in accordance with the teachings provided herein.

Referring next to FIG. 5, a method of controlling an Internet browserinterface 20 is there depicted in accordance with an embodiment of thepresent invention, and designated generally as 500. At step 510, anInternet user accesses a controlling program 120 via an Internet website 130, an ISP 80, or the user's computer 50. The controlling program120, when executed by an Internet user, provides that user with theability to thereafter control that user's Internet browser interface 20,as discussed in more detail below. The controlling program 120, at step520, downloads or creates a library file 74 on the Internet user'scomputer 50 that includes ActiveX control or Plug-in code that define aninterface object. Each time the Internet user activates the browser 72,the library file 74 is opened and a connection is automaticallyestablished to a predetermined Internet web site 110, one that ispreferably configured to communicate (i.e., download) to the Internetuser's computer 50, ActiveX control or Plug-in code for the interfaceobject, as indicated at steps 530 and 540. The open library file 74essentially provides a shell within the browser 70 within which thefunctionality provided by the ActiveX control or Plug-in may be added tothe browser interface 20. Neither the library file 74 nor the shellclose until the browser 72 is closed. At step 550, an interface object40 is created that will be displayed in the browser interface 20; theinformation and/or functionality of the interface object 40 is definedby the ActiveX control or Plug-in. In accordance with the variousembodiments of the present invention, the interface object 40 remainsdisplayed by the browser 72 with the browser interface 20, as indicatedat step 560, for as long as the user continues to surf the web, i.e., aslong as the browser 72 is activated. Thus, the functionality added tothe browser 72 and browser interface 20 in accordance with the presentinvention is not lost as the Internet user surfs the web.

The present invention provides various embodiments for controlling thebrowser 72 and browser interface 20, described generally above withreference to FIG. 5, each of which will now be described in detail.

Referring next to FIG. 6 and with continued reference to FIG. 10, adescription of an embodiment of a method of controlling and displaying abrowser 72 and browser interface 20 in accordance with the presentinvention, designated generally as 600, will now be provided. Forpurposes of FIG. 6 and for the following discussion directed thereto, alibrary file 74 has already been downloaded or created on the Internetuser's computer 50, as discussed herein. At step 610, an Internet useractivates a browser 72 to initiate access to the Internet 90. At step620, the library file 74 is opened and a connection automaticallyestablished to a predetermined content provider, as indicated at step630. The functionality defined by the ActiveX control or Plug-in code ofthe BIO Library is communicated by the content provides to the user'scomputer 50, (i.e., to the library file 74) to create an interfaceobject 40 which may be added to the browser interface 20. The interfaceobject 40 is displayed with the Internet browser interface 20, asindicated in step 640. The functionality of the interface object 40, asdefined by the ActiveX control or Plug-in code, remains with theInternet browser interface 20 as the Internet user traverses theInternet 90, regardless of the number or type of Internet sites the uservisits, and as long as the browser 72 remains operational, i.e., as longas the Internet user is accessing the Internet 90 using the browsersoftware program 72. When the Internet user moves from one Internet siteto another, as indicated at step 650, the present invention determineswhether the interface object 40 has survived that move, i.e., whether itis still displayed by the browser 72 in the browser interface 20, asindicated at step 652. If the interface object 40 is not displayed inthe browser interface 20 (i.e., it has been removed from the browserinterface 20 or otherwise terminated), the interface object 40 isredrawn, as indicated in step 660. If the interface object 40 hassurvived a user move from one Internet site to another and remainsdisplayed in the browser interface 20, the present invention alsodetermines, at step 654, if the browser 72 is active; since theinterface object 40 is only displayed in the browser interface 20 whenthe browser 72 is operational. If the browser 72 is not active (i.e.,the user is no longer surfing the web), the interface object 40 isterminated and the library file 74 is closed, as indicated at step 670.If the browser 72 remains active, the present invention continues, atstep 652, to ensure that the interface object 40 is displayed with thebrowser interface 20. As the Internet user moves between and amongInternet sites, the present invention monitors the status of theinterface object 40 and ensures that it is displayed by the browser 72with the browser interface 20 as long as the user is traversing theInternet 90.

According to the embodiment depicted in FIG. 6, the present inventionensures that the interface object 40 is displayed by the browser 72 withthe browser interface 20 when the Internet user leaves the Internet website 130 at which the BIO Library initially was called and loaded to theuser's computer 50. For example, when the user activates the browser 72,a connection is automatically established to a first, predeterminedInternet site 130 that is maintained by a first content provider 100 andthe BIO Library is loaded onto the user's computer 50. The functionalityprovided by the BIO Library is then available to the browser 72 via ashell created by the library file 74. When the Internet user connects toa second Internet site 230 maintained by a second content provider 200,the functionality for the interface object 40 will continue to bepresent in the browser interface 20. In this embodiment, the presentinvention prevents the browser 72 or operating system 70 of the computer50 from disabling the functionality of the BIO Library by unloading thelibrary file 74 when the link to the first Internet site 130 isterminated.

For example, when the browser 72 initially connects to the firstInternet site 130, that site 130 communicates functional information inthe form of ActiveX control software code to the Internet user'scomputer 50 as a BIO Library, which is loaded into the library file 74.If the library file 74 is not explicitly instructed by the operatingsystem 70 or the browser 72 to close or unload when the connection tothe first Internet site 130 is terminated, the library file 74 willremain loaded, providing the desired functionality for the interfaceobject 40 in the browser interface 20, even after the connection to thefirst Internet site 130 is closed. Keeping the library file 74 loadedwhile the Internet user moves between and among various Internet sitesenables the loading of data, functions and objects outside of theActiveX control (which is only communicated to the Internet user 50 bythe first Internet site 130) but inside of the library file 74. As longas the library file 74 remains loaded, any data or objects created inthe library file 74 and outside of the ActiveX control will stay loadedand continue to function in the browser interface 20.

To keep the library file 74 open during surfing, after the browser 72has connected to the first Internet site 130, and before that connectionis terminated, a global object, object A, is created in the program heapof the Internet user's computer 50, not the calling function heap. Thus,the global object survives the completion of the calling function. Theglobal object may be created using the C++ new operator, or by declaringa global object in the global declarations. In either case, the globalobject will survive termination of the connection between the browser 72and the first Internet site 130.

A global object thus defined remains functional after the ActiveXcontrol provided by the first Internet site 130 closes, i.e. after theinitial connection to the first Internet site 130 is terminated. Oncethe global object has been created, an interface is created using theglobal object. That interface will serve to, for example, remove,replace and/or add functionality to the browser 72 and browser interface20. The interface may be created as part of the global object, or by theglobal object allocating a new interface object 40. For example, theinterface object 40 may be created by creating, for example, aninterface object window 48 within a browser window 38 (see, e.g., FIGS.3 and 4), and adding it to the browser interface 20 as a child windowAlternatively, the browser interface 20 may be directly modified suchas, for example, by adding or modifying a browser toolbar 22 or abrowser toolbar object 24 in the browser interface 20. Yet anotheralternative is to create an object interface toolbar 42 that is separatefrom the browser interface 20, as depicted in FIG. 4.

Additionally, a pointer is required that is used to control the browser72, i.e. to instruct the browser 72 to establish a connection to apredetermined Internet site 130, for example. That pointer is preferablystored globally so that it is accessible by any function or object inthe library file 74 that sends commands to the browser 72. In MicrosoftInternet Explorer, for example, the IWebBrowser, IWebBrowser2, orIWebBrowserApp object linking and embedding (OLE) interface commands maybe used to create the pointer. Using Microsoft Foundation Class (MFC),for example, the pointer may be created using the GetClientSite memberof the COleControl class to retrieve a pointer from the first Internetsite 130, i.e., the Internet site which loaded the BIO Library. TheGetClientSite serves as the entry point for the browser 72 tocommunicate with the BIO Library. A GetContainer member of theIOleClientSite class returned by the previous step may be used to get apointer to a container for the BIO Library. The BIO Library's containeris a container within which an ActiveX control is loaded. An Internetbrowser interface 20 generally consists of several parts, including thebrowser toolbars 22 and the content window 32. A document object iscreated by the browser 72 for every web page an Internet user accessesand contains all of the data that appears in a particular web page. Thedocument object is also the container for the BIO Library. Thus, adocument object may also be referred to as a BIO Library's container.

A QueryInterface member of the IOleContainer class returned by theprevious step may be used to get a pointer to the IServiceProviderinterface, which may be used to locate any of the other interfaces thatare presented by the browser 72. Finally, a QueryService member of theIServiceProvider class returned by the previous step may be used to geta pointer to the IWebBrowserApp, IWebBrowser, or IWebBrowser2 interface,depending on the specific interfaces provided by the browser 72 thatcalled the BIO Library.

In an alternative embodiment, the present invention may be used tomodify the entire browser window 30. If the entire browser window 30 ismodified, as opposed to integrating an interface object 40 into anexisting browser window 38, the entire class for the modified browserwindow 30 may be subclassed or, alternatively, the specific browserwindow 38 may be subclassed. As used herein, the term subclassing awindow, also referred to as hooking a window, refers to the replacementof an original browser window message handling procedure for handlingall messages sent to a window, with a user-defined window messagehandling procedure. For example, a window may be subclassed using theMicrosoft Foundation Class (MFC) CWnd:SubclassWindow( ) function.Alternatively, a window may be subclassed using the call theSetWindowLong function (a Microsoft Windows function), with theGWL_WNDPROC argument (a Microsoft Windows constant). The pointerreturned by the SetWindowLong function call may be stored to theoriginal browser window message handling procedure for the subclassedwindow. This enables the BIO Library to intercept all messages passed toa window 30 or 38, and the BIO Library may interpret commands frominterface controls 24 including buttons, menus, etc., provided by thebrowser 72 or from interface objects 40 that have been added by the BIOLibrary in accordance with the present invention.

The user-defined window message handling procedure that the BIO Libraryprovides and that replaces the original browser window message handlingprocedure is referred to herein as the BIO Procedure. Using the BIOProcedure for the browser 72, messages (i.e., commands) intended for thebrowser 72 may be intercepted and modified, or replacement or newmessages (e.g., message handlers for the interface object 40) may becommunicated to the browser 72 by the BIO Procedure.

The present invention also ensures that the interface object 40 has notbeen removed from the browser interface 20. For example, some Internetbrowsers 72 redraw the entire browser interface 20 when an Internet useraccesses a new web site. While the global object may still be functionalfollowing such Internet movement by the user, the interface object 40will be removed from the browser interface 20 and thus, will not bedisplayed with the browser interface 20. To prevent this from occurring,messages (i.e., commands) from the browser 72 to repaint the browserinterface 20 may be intercepted by the BIO Procedure and the interfaceobject 40 may be redrawn immediately after the browser interface 20 isredrawn. Alternatively, the presence of the interface object 40 in thebrowser interface 20 may be periodically tested and if not present inthe browser interface 20, the interface object 40 may be redrawn. Suchperiodic testing should preferably occur at intervals of less thanapproximately one second.

As an example of the above-described embodiment (depicted in FIG. 6), anActiveX control is loaded as a BIO Library and adds menu items (andfunctionality) to the browser interface 20. The present inventioncreates an ActiveX control that dynamically creates a new global object,object A, which creates a new menu object (i.e., an interface object 40)with a desired functionality to be added to the browser interface 20.The menu object 40 may be added to the browser interface 20 using, forexample, the instructions: AfxGetMainWnd( )→GetMenu( )→AppendMenu( ),where the appended menu of the browser interface 20 would include apopup menu that points to the menu object 40. The browser interfacewindow would then be subclassed and handle the messages for the menuobject 40 handled by the BIO Procedure and the messages for the browserinterface 20 being passed to the message handler for the browser 72.When the Internet user disconnects from the first Internet site 130(i.e., leaves the web page containing the ActiveX control), the ActiveXcontrol will close, but the global object, i.e., object A, will remainin the program heap and continue to provide the desired functionality tothe browser interface 20.

Instead of subclassing the browser window within which the interfaceobject 40 is added, object A, or one of its descendents, may retainownership of the interface object 40. Then, a message handler for theinterface object 40 may be created. For example, an interface object 40may be added to a browser toolbar 22 in accordance with theabove-described embodiment of the present invention, except thatownership of the interface object 40 is set using the MicrosoftFoundation Class SetOwner function to be object A or one of it'sdescendents.

With reference next to FIG. 7 and continued reference to FIG. 10, adescription of an alternate embodiment of a method of controlling anddisplaying a browser interface 20 in accordance with the presentinvention, designated generally as 700, will now be provided. Forpurposes of FIG. 7 and for the following discussion directed thereto, alibrary file 74 has already been created on the Internet user's computer50, as described herein. At step 710, an Internet user activates abrowser 72 to access the Internet 90. At step 720, the library file 74is opened on the user's computer 50, and a connection is automaticallyestablished to a predetermined Internet site 130, as indicated at step730. At step 740, the functionality defined by the ActiveX control orPlug-in code of the BIO Library is communicated by the content providerto the user's computer 50 (i.e., to the library file 74) to create aninterface object 40 which may be displayed in the browser interface 20using a continuous loop to control the display of the interface object40. The interface object 40 may only be removed (i.e., its functionalityterminated) upon termination of the continuous loop. The functionalityof the interface object 40, as defined by the ActiveX control or Plug-incode, remains with the Internet browser interface 20 as the Internetuser traverses the Internet 90, regardless of the number or type ofInternet web sites the user visits, and as long as the browser 72remains operational, i.e., as long as the Internet user is accessing theInternet using that browser software program. When the Internet usermoves from one web site to another, as indicated at step 750, thepresent invention determines whether the interface object 40 hassurvived that move, i.e., whether it is still displayed in the browserinterface 20, as indicated at step 752. If the interface object 40 isnot displayed by the browser 72 in the browser interface 20 (i.e., ithas been removed from the browser interface 20 or otherwise terminated),the interface object 40 is redrawn, as indicated in step 760. If theinterface object 40 has survived a user move from one web site toanother and remains displayed in the browser interface 20, the presentinvention also determines, at step 754, if the browser 72 is active;since the interface object 40 is only displayed by the browser 72 in thebrowser interface 20 when the browser 72 is operational. If the browser72 is not active (i.e., the user is no longer surfing the web), theinterface object 40 is terminated and the library file 74 is closed, asindicated at step 770. If the browser 72 remains active, the presentinvention determined, at step 756, whether the continuous loop has beenterminated. If the loop has been terminated, the interface object 40 isalso terminated, as indicated at step 770. If the loop is stillexecuting, the present invention determines whether the interface object40 is still displayed in the browser interface 20, as indicated at step752.

The embodiment of the present invention depicted in FIG. 7 prevents anActiveX control from unloading by freezing the operation of the libraryfile 74 (within which the ActiveX control code is loaded), even if theoperating system 70 or browser 72 generate an instruction to unload orterminate the library file 74. Because the library file 74 is frozen andnever finishes unloading, all of the data, functions and objects createdinside of the library file 74 by the ActiveX control will continue toexist and function after the library file 74 has been instructed tounload.

In some operating systems 70 and/or browsers 72, the BIO Library will beclosed when the ActiveX control is no longer present at an Internetsite. This can also occur when the Internet user moves from an Internetsite having the ActiveX control, e.g., Internet site 130 in FIG. 10, toanother Internet site that does not, e.g., Internet site 230 in FIG. 10.To enable the interface object 40 to continue to operate in the absenceof the ActiveX control, the BIO Library (and the library file 74) mustbe prevented from closing.

To accomplish this, a pointer is created that is used to control thebrowser 72. That pointer is preferably stored globally so that it isaccessible by any function or object in the library file 74 that mayneed to send commands to the browser 72. In Microsoft Internet Explorer,for example, the IWebBrowser, IWebBrowser2, or IWebBrowserApp OLEInterface commands may be used to create the pointer. To do this usingMicrosoft Foundation Class, the GetClientSite member of the COleControlclass (which may be used to communicate with the BIO Library) may beused to retrieve a pointer to the BIO Library's Internet site, i.e. thatInternet site that provides the ActiveX control. A GetContainer memberof the IOleClientSite class returned by the previous step may be used toget a pointer to the BIO Library's container. A QueryInterface member ofthe IOleContainer class returned by the previous step may be used to geta pointer to the IServiceProvider interface. The IServiceProviderinterface is used to easily find any of the other interfaces that arepresented by the browser 72. A QueryService member of theIServiceProvider class returned by the previous step may be used to geta pointer to the IWebBrowserApp, IWebBrowser, or IWebBrowser2 interfacedepending on the interfaces presented by the version of the browser 72that called the BIO Library.

To prevent the library file 74 from closing, its operation is haltedbefore it is able to terminate. To freeze or halt the operation of thelibrary file 74, a continuous program loop may be created and executedthat terminates only when the BIO Library is to be unloaded, at whichtime, the program loop also pumps the message que. The program loop isreferred to herein as a message pump, and may be created using forexample, the PeekMessage, GetMessage, TranslateMessage andDispatchMessage commands in a loop. Exemplary C++ code to carry out themessage pump is provided below: while (m_Continue) { if (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE) != 0) { GetMessage( &msg, NULL, 0, 0 );TranslateMessage( &msg ); DispatchMessage( &msg ); } }where m_Continue is a Boolean variable that is used to instruct the loopwhen to stop, and PeekMessage, GetMessage, TranslateMessage, andDispatchMessage are all Windows functions. If m_Continue equals false,the loop will end, thus ending the message pump. The msg argument is areference to a Windows MSG structure.

The way the message pump preferably operates is that it checks to see ifthere are any messages waiting in the message que using the PeekMessagefunction. If there is a message, the message pump grabs the message fromthe message que using the GetMessage function and translates it from avirtual-key message into a character message using the TranslateMessagefunction. Finally, the message pump sends the message to the originalwindow message handling procedure that is due to receive the messageusing the DispatchMessage function.

The built in capabilities of an operating system 70 may be also used toconstruct a message pump to pump the message que. For example, a modaldialog box or message box, using a command such as the MFC commandCWnd::MessageBox(“my modal”, MB_OK), serves this purpose well and may beused to provided the desired freezing or halting of the operation of thelibrary file 74.

As long as the message pump is executing a continuous loop, the ActiveXcontrol will not terminate, even when the Internet user accesses (i.e.,visits) other Internet sites.

The embodiment of the present invention depicted by FIG. 7 performs inthe same manner (e.g., subclassing, message handling, etc.) as theabove-described embodiment of FIG. 6.

For both of the above-described embodiments (of FIGS. 6 and 7), it ispreferable, although not necessary, to provide an exit function for theinterface object 40 so that object A and all of its descendents will beclosed. Possible exemplary scenarios for calling an exit functioninclude intercepting the message to close the browser window in the BIOProcedure, or periodically looking for the browser window and, if it isnot found, terminating the ActiveX control.

Referring next to FIG. 8A, yet another embodiment of the method of thepresent invention is depicted and designated generally as 800. Forpurposes of FIG. 8A and for the following discussion directed thereto, alibrary file 74 has already been created on the Internet user's computer50, as described herein. At step 810, an Internet user activates abrowser 72 to access the Internet 90. At step 820, the library file 74is opened on the user's computer 50 and a connection is automaticallyestablished to a predetermined Internet site 130 (see, e.g., FIG. 10),as indicated at step 830. At step 832, a new browser interface iscreated that is a duplicate of the initial browser interface provided bythe browser 72. At step 840, a Function Window is created thatrepresents the original browser interface within which the functionalityof the Plug-in was initially loaded.

The steps for creating a Function Window in accordance with thisembodiment of the present invention are depicted in FIG. 8B anddesignated generally as 840. At step 842, the handle for the initialbrowser interface window is identified. The initial browser interfacewindow, now the Function Window, is hidden and/or disabled at step 844so that it cannot be closed, which would cause the BIO Library to crash.At step 846, a pointer is created that is used to control the browser72. Finally, a new browser interface window is created at step 848 thatmay be used by the Internet user to continue traversing the Internet.

With reference again to FIG. 8A, and beginning at step 850, the browserinterface may now be controlled by first subclassing any browserwindows, or any windows used by the browser, that are to be controlled,and then adding, deleting, and/or modifying the window(s) as describedin more detail below. The original browser window message handlingprocedure is replaced with a BIO Procedure (as defined above). At step860, the present invention determines whether any new browser windowshave been opened, i.e., windows that may not already be subclassed orthat may not have been controlled in accordance with the presentinvention. If new windows have been opened, the present inventiondetermines, at step 870, whether the interface object 40 is to be addedto those new windows. If not, the invention determines whether theInternet user desires to close the browser 72, as indicated at step 880.If so, the invention closes, at step 890, all browser windows, includingthe Function Window. If the user does not desire to close the browser72, as determined at step 880, the invention returns to step 860 andagain determines if new browser windows have been opened.

With continued reference to FIGS. 8A, 8B and 10, the above-describedembodiment of the present invention will now be discussed in moredetail. When an ActiveX control is loaded by a content provider 100 viaan Internet site 130, typically in response to a browser 72 establishinga connection to that web site 130 and calling an ActiveX control, alibrary file 74 located on the user's computer is caused to opencreating a shell within the browser 72 within which the code for theActiveX control may be loaded. If the library file 74 that contains theActiveX control is explicitly instructed, by the operating system 70 orthe browser 72, to unload (i.e., close) when the ActiveX control isclosed (when the user terminates the connection to the Internet site130), any data, functions or objects that have been created outside ofthe ActiveX control but in the library file 74 will be destroyed whenthe library file is 74 unloaded. To prevent the library file 74 fromunloading, the browser 72 is prevented from closing the ActiveX controluntil instructed. If the ActiveX control is never instructed to close,the library file 74 is never unloaded.

A preferred method of accomplishing this is to hide and/or disable theinitial browser interface window that loaded the ActiveX control and tocreate a new copy of that same window within which the Internet user maycontinue to work and traverse the Internet. Because the initial browserinterface is preferably hidden and/or disabled, the ActiveX controlcannot be closed until the library file 74 shows, enables or closes theinitial browser interface window, i.e. the window that loaded thelibrary file 74.

The above-described method of FIG. 8A preferably loads the BIO Libraryas a standard ActiveX control in a browser 74, using, for example, the<Object> tag typically contained in a web page 130 or as a Band Object,and as described in the Microsoft Internet Explorer 4.x SoftwareDevelopment Kit. This instructs the browser 72 to initialize and run thelibrary file 74 that contains the code for BIO Library.

The first time the BIO Library is initialized and called, a FunctionWindow is created that keeps the BIO Library open by keeping a sessionwith the ActiveX control itself open while the Internet user visitsother Internet web sites 210, i.e., other web pages. The Function Windowalso makes it possible for browser windows that do not have a copy ofthe BIO Library open to access the OLE interfaces to the browser 72.

To create the Function Window, the initial browser interface window(i.e., that window which loaded the BIO Library) is preferably hiddenand/or disabled. This may be accomplished by identifying the handle ofthe initial browser interface window, beginning with the handle of theBIO Library. To retrieve the initial browser interface window handlefrom the handle of the BIO Library, the GetParent function (a WindowsFunction) is continuously called until the present value for thatfunction call represents one level below the desktop window. Forexample, a statement such as “m_Handle=GetParent(m_Handle)” executed ina loop may provide the desired functionality and result, where the valueof m_Handle is initially equal to the value for the handle of the BIOLibrary, and will eventually return the handle to the initial browserinterface window.

The next step is to hide and/or disable the initial browser interfacewindow, now referred to as the Function Window, so that the Internetuser cannot close the Function Window (by closing the browser 72, forexample), thereby causing the BIO Library to unload and removing thefunctionality provided by the BIO Library from the browser interface 20.To hide the initial browser interface window from the user and/ordisable that browser window from user-driven events, WM_SHOWWINDOWand/or WM_ENABLE messages (both Windows constants) may be sent to theinitial browser interface window with values to hide and/or disable thebrowser window. For example, the PostMessage or SendMessage function(existing Windows functions) may be used to send a message to theinitial browser interface window with the browser window handle.Alternatively, the ShowWindow and EnableWindow functions (existingWindows functions) may be used to achieve the same result.

A pointer is created to control the browser 72. This pointer ispreferably stored globally so that it is accessible by any function orobject in the library file 74 that sends commands to the browser 72. InMicrosoft Internet Explorer for example, the IWebBrowser, IWebBrowser2,or IWebBrowserApp OLE interface may be used to create the pointer. To dothis using Microsoft Foundation Class for example, the GetClientSitemember of the COlecontrol class that serves as the entry point for thebrowser 72 may be used to communicate with the BIO Library, and toretrieve a pointer to the BIO Library's Internet site, i.e., thatInternet site 130 that loaded the ActiveX control. A GetContainer memberof the IOleClientSite class returned by the previous step may be used toget a pointer to the BIO Library's container. A QueryInterface member ofthe IOleContainer class returned by the previous step may be used to geta pointer to the IServiceProvider interface; with the IServiceProviderinterface preferably being used to find any of the other interfaces thatare presented by the browser 72. A QueryService member of theIServiceProvider class by in the previous step may be used to get apointer to the IWebBrowserApp, IWebBrowser, or IWebBrowser2 interfacedepending on the interfaces presented by the version of the browser 72that called the BIO Library.

Finally, a new browser window is created that the Internet user may useto continue surfing the web, i.e., to continue accessing variousdifferent Internet sites, since the browser window previously used tocreate the Function Window has been hidden and/or disabled. Preferably,any of the IWebBrowser, IWebBrowser2, or IWebBrowserApp OLE interface isused to create a new browser window, for example, using the Navigate orNavigate2 members of that OLE interface. Alternatively, a WM_COMMANDmessage that corresponds to any command the browser 72 might use to opena new browser window such as a New Window command or Open In New Windowcommand, etc., may be sent to the browser 72. A new window may also beopened using the Dynamic Data Exchange (DDE) support provided by thebrowser 72.

The BIO Library must now add/delete/modify, i.e., control, variousbrowser interface features and functionality. The first step is tosubclass any of the browser windows or any of the windows the browseruses (i.e., children) that are to be controlled in accordance with thepresent invention. A BIO window message handling procedure is used toreplace the original window message handling procedure, and ishereinafter referred to as the BIO Procedure.

Once the browser window, or any of it's children, have been subclassed,it is possible to add menus to a subclass by retrieving a pointer to thebrowser window menu using the GetMenu function. Once the pointer to themenu's handle is obtained, the menu functions such as ModifyMenu,AppendMenu, InsertMenu, etc., may be used to add any desired menus tothe browser window. Any commands assigned to a menu must be handled bythe BIO Procedure used to subclass the BIO window. The same commandidentifier must not be used in creating a menu as any that are includedin the browser.

An interface object toolbar 42 may be added to the browser interface 20by retrieving the handle of the window to which the toolbar 42 is to beadded to (hereinafter referred to as the Frame Handle) using standardWindows functions. Typically, the window will be the BIO window or aframe window that is a child of the BIO window. A window is then createdusing the Frame Handle as its parent. For example, to add a dialog bar(which is a form of a toolbar) as an interface object 40, an objectderived from or of a type CDialogBar (a Microsoft Foundation Class) iscreated and it's Create method called using Frame Handle. If resourcessuch as, for example, images, toolbars, dialogs, etc., are being usedand the browser 72 does not share the same resources as the BIO Library,the browser's resources are temporarily replaced with the BIO Libraryresources before any data may be loaded from the BIO Library resource.The BIO Library resources may then be replaced with the browser'soriginal resources.

As new browser windows are opened, it may be desirable to add interfaceobject(s) 40 to those new windows. A timer may be created using SetTimerWindows function that would call a user-defined function and thatfunction would use the FindWindowEx function (a Windows function) tocheck every child of the desktop window for a window with the same classname as the Function Window. For those browser windows that have notalready been modified, i.e., that do not have the interface object 40,the necessary handles may be retrieved and the same changes made as weremade for the original BIO Window.

Finally, when the Internet user desires to close the browser 72, it mustbe determined if all of the browser windows are closed, except theFunction Window, and the Function Window must also be closed if allother browser windows are closed. This may be accomplished by listeningfor a WM_CLOSE message (a Windows constant) in the BIO message handlingprocedure or by setting a timer that periodically determines how manybrowser windows are open. To close the original Function Window, aWM_CLOSE message may be sent to that window.

Referring next to FIG. 9, another alternative embodiment of a method ofcontrolling and displaying an Internet browser interface 20 inaccordance with the present invention is depicted and generallydesignated as 900.

Steps 910, 920, and 930 are essentially the same as described above forthe embodiments of FIGS. 6-8B. At step 940, a new browser interfacewindow is created and the initial browser interface window is hiddenand/or disabled, and referred to as a Function Window. The Plug-inidentifies the handle for the initial browser interface window, hidesand/or disables that window, and creates a new browser interface windowthat may be used by the Internet user. At step 950, all the browserwindows are subclassed, and then the browser interface may becontrolled, as indicated at step 960, for all open windows. At step 962,the present invention determines if any new browser windows have beenopened, in which case the invention returns to step 960. In no newbrowser interface windows have been opened, step 962 proceeds to step964 to determine if the Internet user desires to close the browser. Allwindows must be closed prior to closing the Function Window, and that isdetermined at step 966. If all windows are closed, the Function Windowis closed, as indicated at step 970. Otherwise, step 966 returns to step964.

In yet another alternative embodiment of the present invention, thepresent invention provides a method of controlling an Internet browserinterface using a browser Plug-in to control (i.e., add, remove and/ormodify) the functionality of the calling browser 72 and to retain thePlug-in functionality after the user leaves the Internet site 130 thatloaded the Plug-in.

When a browser Plug-in is loaded to an Internet user's computer 50 inresponse to a browser 72 establishing a connection to an Internet site130 and calling the Plug-in, a library file 74 establishes a shellwithin the browser 72 and within which the code for the Plug-in may beloaded. If the library file 74 is explicitly instructed by the operatingsystem 70 or the browser 72 to unload when the Plug-in is closed, anydata, functions or objects that have been created outside of the Plug-inbut in the library file 74, will be destroyed when the library file 74is unloaded. To prevent the library file 74 from unloading, the browser72 is prevented from closing the Plug-in until the browser 72 receivesan instruction to close the Plug-in. If the Plug-in is never instructedto close, the library file 74 also is never instructed to unload. Thismay be accomplished by hiding and/or disabling the initial browserwindow that loaded the Plug-in and by creating a new copy of that samewindow for the Internet user to continue to use to access and traversethe Internet. Because the initial browser window is preferably hiddenand/or disabled, the Plug-in can not be closed until the library file 74chooses to show, enable or close the initial browser window that loadedthe Plug-in.

For example, a browser Plug-in is loaded as a standard Plug-in in abrowser 72, preferably by using the <Embed> tag in a web page 110 (seee.g., FIG. 10), which instructs the browser 72 to initialize and loadthe library file 74 that contains the code for the Plug-in (i.e., theBIO Library).

The first time the BIO Library is initialized and called, a FunctionWindow is created by hiding and/or disabling the original browserwindow, thus preventing the BIO Library from unloading by keeping asession with the Plug-in itself open. The Function Window also makes itpossible for browser windows that do not have a copy of the BIO Libraryopen to access built-in Application Programming Interfaces (APIs) forPlug-ins (i.e., functionality made available to the Internet userthrough the browser interface 20 and via the Plug-in functionality),such as those provided with Netscape Navigator and Microsoft InternetExplorer.

A Function Window is preferably created by disabling or hiding theinitial browser window (in which the Plug-in resides) the first time thePlug-in is called by the browser 72. To do this the Plug-in must firstidentify the handle of the initial browser window. A window member ofthe NPWindow structure is passed to the BIO Library from the browser 72as a second argument to the NPP_SetWindow Function and is the handle tothe Plug-in window (NPWindow and NPP_SetWindow are part of the Netscapeand Internet Explorer API for Plug-Ins). To retrieve the initial browserwindow handle from this window member, the GetParent function (a Windowsfunction) is continuously called until the present value for thatfunction call represents one level below the desktop window. Forexample, a statement such as “m_Handle=GetParent(m_Handle)” executed ina loop may provide the desired functionality and result, where the valueof m_Handle is initially equal to the value for the handle of theNPWindow structure, and will eventually return the handle for theinitial browser window.

The initial browser window is then hidden and/or disabled so that theInternet user cannot close the Function Window and cause the BIO Libraryto crash. To hide the initial browser window from the user and/ordisable that window from user-driven events, WM_SHOWWINDOW and/orWM_ENABLE messages (both Windows constants) may be sent to the initialbrowser window with values to hide and/or disable that browser window.This can be accomplished by, for example, using the PostMessage orSendMessage function (Windows functions) to send a message to theinitial browser window using the browser window handle. Alternatively,the ShowWindow and EnableWindow functions (Windows functions) may beused to achieve the same results.

The final step is to create a new browser window that the Internet usercan use to continue surfing the web after the initial browser window hasbeen hidden and/or disabled. This may be accomplished, for example, bycalling any of the following Netscape and Internet Explorer Plug-in APIfunctions: NPN_GetURL, NPN_PostURL, NPN_GetURLNotify, NPN_PostURLNotify,with the target parameter set to _new, _blank, or any window name thatdoes not already exist. The NPP argument of the above functions is theNPP structure that was provided by the browser 72 to the Plug-in for theFunction Window. Another way of doing this is to send a WM_COMMANDmessage to the browser 72 that corresponds to any command the browser 72might use to open a new window such as a New Window command or Open InNew Window command, for example. A new window may also be opened usingthe Dynamic Data Exchange (DDE) Support provided by the browser.NPN_GetURL, NPN_PostURL, NPN_GetURLNotify, NPN_PostURLNotify and the NPPstructure are part of the Netscape and Internet Explorer API forPlug-Ins and the WM_COMMAND is a Windows constant.

The BIO Plug-in may now control, i.e., add/delete/modify, features andfunctionality of the browser 72. The first step is to subclass any ofthe browser windows or any of the windows the browser uses(collectively, BIO windows) that are to be controlled in accordance withthe present invention.

After the browser window or any of it's children has been subclassed,menus may be added to the browser interface 20 by retrieving a pointerto the browser window menu using the GetMenu function (a Windowsfunction). Once the pointer to the menu's handle is obtained, the menufunctions such as ModifyMenu, AppendMenu, InsertMenu, etc. (Windowsfunctions), may be used to add any desired menus to the browser window.Any commands assigned to a menu must be handled by the BIO messagehandling procedure used to subclass the BIO window, taking care not touse the same command identifier in creating a menu as any included inthe browser 72.

Alternatively or additionally, an interface object toolbar 42 may beadded to the browser interface 20 by retrieving the handle of the windowto which the toolbar 42 is to be added (hereinafter referred to as theFrame Handle) using standard windows functions—typically the window willbe the BIO window or a frame window that is a child of the BIO window. Awindow is then created using the Frame Handle as its parent. Forexample, to add a dialog bar (which is a form of a toolbar) as aninterface object 40, an object derived from or of type CDialogBar (aMicrosoft Foundation Class) may be created and it's Create method calledusing the Frame Handle. If resources such as, for example, images,toolbars, dialogs, etc., are being used and the browser 72 does notshare the same resources as the BIO Library, the browser's resources aretemporarily replaced with the BIO Library resources before any data fromthe BIO Library resource may be loaded. The BIO Library resources maythen be replaced with the browser's original resources.

As new browser windows are opened, the interface object 40 may be addedto those new windows. This may be accomplished by creating a timer usingSetTimer (a Windows function) that would call a user-defined functionthat would use the FindWindowEx function (a Windows function) to checkevery child of the desktop window for a window with the same class nameas the Function Window. For those new windows that do not already havethe modified interface, i.e., that do not include the interface object40, the necessary handles are retrieved and the same changes made tothose windows as were made to the original BIO window.

Finally, when the Internet user wishes to close the browser 72, it mustbe determined if all of the browser windows are closed except theFunction Window, and if they are, the Function Window may be closed.This may be accomplished, for example, by listening for a WM_CLOSEmessage (a Windows constant) in the BIO window message handlingprocedure or by setting a timer that periodically checks the number ofopen browser windows. The original Function Window may be closed bysending it a WM_CLOSE message.

In accordance with the present invention, a BIO Library (i.e., aPlug-in) may be loaded and its functionality provided in the browserinterface 20, automatically, i.e., without requiring the user topositively access a particular Internet site, i.e., to surf to a webpage that calls the Plug-in. For example, Netscape has a key in itswindows registry identified as Automation Startup. Upon activation,Netscape loads all of the OLE controls that are listed in the AutomationStartup key. By placing a reference or a call to the library file 74(and thus to BIO Library and Plug-in that defines an interface object40) in the Automation Startup key, the library file may be loaded everytime a user activates a Netscape browser. Included in that library file74 may be instructions to create an instance of the interface object 40in the browser interface 20 and an instruction for the browser 72 toestablish a connection to a predetermined Internet site 130. Using thistechnique, a user does not have to choose to visit a specific Internetsite 130 to load a BIO Library. The library file 74 needs to be keptopen at least until the Plug-in may be loaded in the browser 72 fordisplay and access via the browser interface 20. One way to do this isto increment a reference counter associated with the library file 74 sothat when Netscape unload the OLE controls listed in the AutomationStartup key, the library file 74 will not be unloaded because it has ahigher reference number.

The library file 74 may be loaded as a Plug-in using DDE to periodicallylook for a Netscape DDE Server using a timer or a loop. When a return isreceived by the browser 72 from the Netscape DDE server, Netscape isready to receive commands and may be loaded with the Plug-in. DDE maythen be used to send a command, such as WWW_OPENURL, to the browser 72,which will cause the Plug-in to load as discussed herein.

Another method for hiding the Netscape Plug-in window that is used forBIO Library is to remove it from the task bar (i.e., where the Windows“Start” button is located) and place it off of the visible screen. Oneway to remove it from the Task Bar is to call SetWindowLong and changethe window style of the Plug-in window to a toolbox window. Toolboxwindow's do not appear in the task bar. The Netscape Plug-in window maybe placed off screen by calling MoveWindow and providing coordinatesthat are not in the visible range for the users desktop.

The BIO window message handling procedure that is used to replace theoriginal browser message handling procedure must know which window amessage is intended to reach and what to do with a message once the BIOwindow message handling procedure receives that message. A preferred wayto do this is to create a map that links one piece of information toanother. For the present invention, a map that links window handles tostructures that contain important information to that window ispreferably used. For example when the BIO Library adds the interfaceobject 40 to a new browser window, a new entry in the map is createdthat links the BIO window's handle to a structure that containsinformation useful for that BIO window. One of the pieces of informationcontained in the structure would preferably be the browser's originalwindow message handling procedure for the BIO window. It is necessary tomaintain the browser's original window message handling procedure sothat if the BIO window message handling procedure does not know how tohandle a message, it can pass the message to the browser's originalwindow message handling procedure.

When a message is received by the BIO window message handling procedure,the first argument that is passed to the procedure is the handle of thewindow that received the message. To retrieve the structure thatcontains all of the data specific to that window, a lookup in the map isperformed using the window handle as a key. The returned structure willcontain all of the stored window specific information, such as theoriginal window message handling procedure.

When controlling the browser interface 20, i.e., adding to, removingfrom or modifying the browser interface, the present invention changeshow the browser 72 works. Almost anything an Internet user can do with abrowser works by sending a message to a browser's window or childwindow. Objects or windows that send messages include the menus,buttons, combo boxes and almost anything else with which the Internetuser can directly interact, i.e., interface controls. Messages forexample can be broken up into four components: 1) the handle of thewindow intended to receive the message; 2) the msg value of the message;3) a wParam, whose use is usually dependent on the msg value; and 4) anIParam, whose value is also usually dependent on the value of the msgvalue.

For example, clicking on a button in a browser's window might send amessage that contains the WM_COMMAND, which is a Windows constant, msgvalue to a browser window's window message handling procedure. The lowertwo bytes of the wParam variable in that message would then be a numberthat is used to identify which button was pressed.

By subclassing a browser's window or child window, as described above,any messages that are sent when a user interacts with any of theinterface controls may be intercepted. Once a message is intercepted,the BIO window message handling procedure can interpret it and react toit. If the functionality of the interface control is to remain the same(i.e., not added to, deleted from, or modified by the presentinvention), the message may be passed back to the original windowmessage handling procedure. In this way, virtually all of the interfacecontrols that exist in the browser 72 may be controlled. In addition,interface controls may be added to the browser interface 20 and assignedcommand identifiers (which are passed in the wParam). The BIO windowmessage handling procedure can then interpret the wParam and provide thefunctionality of the Interface control that is to be added. In addition,functionality may be removed by simply having the inventive windowprocedure do nothing if it receives a command identifier associated withan interface control that is to be removed from the browser. Thatcommand may thus be prevented from passing to the browser window'soriginal message handling procedure.

Using the various embodiment of the present invention, as discussed indetail above, an Internet user may create a browser interface 20 havinguser-defined interface controls. Then, by setting the parent of thewindow for that browser interface 20 to a window that has beensubclassed, any message from the new (i.e., controlled) window will behandled in the BIO window message handling procedure. This can be usedto add any interface object 40 such as a toolbar, dialogbar, floatingdialog etc., to the browser interface 20.

The following illustrative, non-limiting application examples areprovided to further describe the present invention. A Plug-in or ActiveXcontrol that stays persistent as an Internet user traverses the Internetmay add an interface object 40 to the browser interface 20 that enablesa user to download their “bookmarks” or “favorites” from a databaselocated on the Internet. The interface will be added directly into thebrowser interface and will allow the user to visit the “bookmarks” or“favorites” links that they downloaded, using the interface object 40provided by the Plug-in or ActiveX control. This interface object 40will serve a similar function to the current “favorites” or “bookmarks”menu items and toolbars on existing browsers. The beneficial differenceis that since the bookmarks will be downloaded from a database on theInternet, users have access to their bookmarks on any computer's browserthat is capable of loading the Plug-in or ActiveX control.

The present invention may also be used to generate revenue based onplacing advertising “links” included in the “favorites” or “bookmarks”on the browser interface 20 via the Plug-in or ActiveX control. Consumertargeting could be based on, for example, information stored indatabases, such as name, age, sex, income, race, education andgeographic location, and preferences such as favorites and bookmarks orother preferences that are stored on the database or exist on thebrowser 72.

A Plug-in or ActiveX control that stays persistent as the user traversesthe Internet may be used to add an interface object 40 to the browserinterface 20 that permits a user to download their “address book” fromof a database located on the Internet. Such an interface object 40 maybe added directly into the interface of the browser interface 20 andwill allow the user to send e-mail as well as retrieve storedinformation for contacts listed in their “address book”.

The present invention may also be used to earn revenue based on placingadvertising “links” included in the “address book” on an interfaceobject 40 of the Plug-in or ActiveX control. Consumer targeting could bebased for example on information stored in databases, such as name, age,sex, income, race, education and geographic location, and preferencessuch as favorites and bookmarks or other preferences that are stored onthe database or exist on the browser.

The present invention may use a Plug-in or ActiveX control to add anedit box on the browser interface 20 that allows a user to type a searchdirectly into the browser instead of having to visit a web page thatallows the user to search.

Additionally, the Plug-in or ActiveX control that stays persistent maypoll, or periodically seek—at user, web site or program selectedintervals—information from a preferred web site, even though the user issurfing a different web site. As the preferred web site is polled, thepreferred web site can send updated information to the interface objecton the user's browser, such as near real-time notification of thereceipt of mail, continuous updating of stock prices, or other timesensitive information, such as, for example, news feed headlines, sportsscores for selected favorite sports teams, and the like. The preferredweb site can control, if desired, the timing of the polling, so as tocontrol the traffic at the preferred web site during peak usage periodsby extending the time interval between polls.

Since the shell created by the library file, as described herein, is anenvironment within which applications can be run, or informationdisplayed, any information or program can be added to the interface ofthe browser using the present invention. The shell is independent of thebrowser interface, the content of the browser, and even the content ofthe shell itself. In short, the shell is an adaptable piece offunctionality that does not, in the extreme, even need to be visible tothe user. Thus, in use, the shell can be empty and receive its contentsfrom a web site, or the shell could get Plug-ins, or the shell couldeven get new library files and learn to parse new information “on thefly” as the shell receives new contents from a web site or user. Thusthe present invention provides significant opportunities to directdesired information from a preferred site to the user even as the uservisits other sites. Of course, the more user-specific functionalityprovided by a web site via the customizable interface of the presentinvention, the greater user loyalty that web site can engender.

Thus, while there have been shown and described and pointed outfundamental novel features of the invention as applied to preferredembodiments thereof, it will be understood that various omissions andsubstitutions and changes in the form and details of the disclosedinvention may be made by those skilled in the art without departing fromthe spirit of the invention. It is the intention, therefore, to belimited only as indicated by the scope of the claims appended hereto.

1. A method of controlling an Internet browser interface displayable byan Internet browser, the Internet browser having a user interface areaand a web page display area and enabling a user of the Internet browserto access and navigate the Internet and to receive and display one ormore web pages from one or more Internet sites, including the display ofa web page from a predetermined Internet site, the Internet browserhaving at least one Internet browser toolbar having at least one toolbarbutton providing a predetermined functionality to the user, said methodcomprising the steps of: (a) providing, at the predetermined Internetsite, one or more web pages via which a program for controlling theInternet browser interface can be downloaded; and (b) making availablefor downloading by the predetermined Internet site said program thatcauses the displaying of a user toolbar within the bounds of the userinterface area such that the user toolbar does not overlay the web pagedisplay area or anything that was displayed in the bounds of the userinterface area prior to downloading, and that makes additionalfunctionality available to the user as part of the Internet browserinterface such that once the user toolbar is displayed the user toolbarremains displayed and said additional functionality remains available tothe user regardless of the Internet site to which the Internet browseris caused to navigate.
 2. A method as recited by claim 1, wherein theuser toolbar comprises an interface object and is customizable by theuser to provide user-selected functionality in the user toolbar.
 3. Amethod as recited by claim 1, wherein the program comprises an ActiveXcontrol.
 4. A method as recited by claim 1, wherein the programcomprises a Plug-in.
 5. A method as recited by claim 2, wherein theinterface object is a toolbar button.
 6. A method as recited by claim 2,wherein the interface object comprises a search window that enables theuser to initiate a search at the predetermined Internet site regardlessof the Internet site to which the user has navigated at the time thesearch is initiated.
 7. A method as recited by claim 1, wherein thepredetermined Internet site maintains user-specific information for aplurality of users, including the user of the Internet browser, saidmethod further comprising the step of making available for downloadingby the predetermined Internet site information specific to the user fordefining all or part of the user toolbar and wherein all or part of thedisplay of the user toolbar is dependent upon the information downloadedby the predetermined Internet site.
 8. A method as recited by claim 7,further comprising the step of making available for downloading by thepredetermined Internet site additional information specific to the userfor defining all or part of the user toolbar, and wherein all or part ofthe display of the user toolbar is dependent upon the downloadedadditional information.
 9. An Internet browser interface displayable byan Internet browser, the Internet browser interface comprising: a userinterface area and a web page display area, said browser facilitatingnavigation to one or more Internet sites, including a predeterminedInternet site; the Internet browser interface further comprising atleast one Internet browser toolbar having predetermined functionalityavailable to a user of the Internet browser, the Internet browserfurther facilitating display of one or more web pages from the one ormore Internet sites, including display of web pages from thepredetermined Internet site; and said Internet browser interface furthercomprising, after download of software from said predetermined Internetsite, a user toolbar that is displayed as part of the Internet browserinterface within the bounds of the user interface area such that theuser toolbar does not overlay the web page display area or anything thatwas displayed in the bounds of the user interface area prior todownload, said user toolbar being displayed along with the Internetbrowser toolbar while the Internet browser is activated regardless ofthe Internet site to which the Internet browser is caused to navigate.10. An Internet browser interface as recited by claim 9, wherein saiduser toolbar comprises an interface object and is customizable by theuser.
 11. An Internet browser interface as recited by claim 10, whereinsaid interface object comprises a toolbar button.
 12. An Internetbrowser interface as recited by claim 10, wherein said interface objectcomprises a search window that enables the user to initiate a search atthe predetermined Internet site regardless of the Internet site to whichthe Internet browser is navigated at the time the search is initiated.13. An Internet browser interface as recited by claim 10, wherein saidsoftware comprises an ActiveX control that enables user customization ofsaid interface object.
 14. An Internet browser interface as recited byclaim 10, wherein said software comprises a Plug-in control that enablesuser customization of said interface object.
 15. An Internet browserinterface as recited by claim 10, wherein the predetermined Internetsite maintains user-specific information for a plurality of users,including the user of the Internet browser, and wherein said softwarecauses the Internet browser to establish a connection to thepredetermined Internet site when the Internet browser is first activatedand to receive information specific to the user from the predeterminedInternet site, and wherein all or part of said user toolbar is dependentupon the information.
 16. An Internet browser interface as recited byclaim 15, wherein said software causes the Internet browser toperiodically re-establish a connection to the predetermined Internetsite while the Internet browser is activated to receive additionalinformation specific to the user of the Internet browser from thepredetermined Internet site, and wherein all or part of said usertoolbar is dependent upon the received information and the additionalinformation.
 17. A system for controlling an Internet browser interfacedisplayable by an Internet browser on a display of a computer, saidbrowser interface comprising a user interface area and a web pagedisplay area, said system comprising: a server, said server hosting adownload feature accessible over the Internet by a user for controllingthe Internet browser interface; and a file downloadable by said serverfor controlling the Internet browser interface in the form of an addeduser toolbar offering user toolbar functionality that remains availableto a user of the computer regardless of the Internet site to which theInternet browser is caused to navigate, the user toolbar being displayedwithin the bounds of the user interface area such that the user toolbardoes not overlay the web page display area or anything that wasdisplayed in the bounds of the user interface area prior to download.18. A system as recited by claim 17, wherein said downloadable filecauses the user toolbar to be displayed as part of the Internet browserinterface upon a subsequent activation of said browser after download.19. A system as recited by claim 18, wherein said downloadable filecauses an interface object to be displayed as part of said user toolbar.20. A system as recited by claim 19, wherein said interface objectenables a user of the computer to customize the user toolbar andcomprises an ActiveX control.
 21. A system as recited by claim 19,wherein said interface object enables a user of the computer tocustomize the user toolbar and comprises a Plug-in.
 22. A system asrecited by claim 19, wherein said interface object is a toolbar button.23. A system as recited by claim 19, wherein said interface object is asearch window that enables the user of the Internet browser to initiatea search at a predetermined Internet site regardless of an Internet siteto which the browser is navigated at the time the search is initiated.24. A system for controlling an Internet browser displayable on adisplay of a computer, said system comprising: a server for downloadingfiles; and a file, downloadable by said server, said file controllingthe Internet browser so that the Internet browser enables a user of thecomputer to perform functions via the Internet browser not available tothe user via the Internet browser prior to said filed being downloaded,said functions being made available via a user toolbar that is added toand displayed within the bounds of a user interface area of the Internetbrowser such that the user toolbar does not overlay a web page displayarea of the Internet browser or anything that was displayed in thebounds of the user interface area prior to download.
 25. A system asrecited by claim 24, wherein the file is caused to open when theInternet browser is activated so as to establish a link between thecomputer and the predetermined Internet site, and wherein the filereceives information from the predetermined Internet site for definingall or part of an interface object to be displayed within the usertoolbar.
 26. A system as recited by claim 25, wherein the fileperiodically causes the Internet browser to establish a link between thecomputer and the predetermined Internet site and receive additionalinformation from the predetermined Internet site for defining all orpart of the interface object.
 27. The method of claim 1 wherein the usertoolbar comprises a button via which the user can establish a connectionto an email service.
 28. The method of claim 1 wherein the user toolbarcomprises a button via which the user can access a list of said user'sfavorite websites.
 29. The method of claim 1 wherein the user toolbarcomprises a button via which the user can access a list of useraddresses.
 30. The method of claim 1 wherein the user toolbar comprisesan advertisement.
 31. The interface of claim 9 wherein the user toolbarcomprises a button via which the user can establish a connection to anemail service.
 32. The interface of claim 9 wherein the user toolbarcomprises a button via which the user can access a list of said user'sfavorite websites.
 33. The interface of claim 9 wherein the user toolbarcomprises a button via which the user can access a list of useraddresses.
 34. The interface of claim 9 wherein the user toolbarcomprises an advertisement.
 35. The system of claim 17 wherein the usertoolbar comprises a button via which the user can establish a connectionto an email service.
 36. The system of claim 17 wherein the user toolbarcomprises a button via which the user can access a list of said user'sfavorite websites.
 37. The system of claim 17 wherein the user toolbarcomprises a button via which the user can access a list of useraddresses.
 38. The system of claim 17 wherein the user toolbar comprisesan advertisement.
 39. The system of claim 24 wherein the user toolbarcomprises a button via which the user can establish a connection to anemail service.
 40. The system of claim 24 wherein the user toolbarcomprises a button via which the user can access a list of said user'sfavorite websites.
 41. The system of claim 24 wherein the user toolbarcomprises a button via which the user can access a list of useraddresses.
 42. The system of claim 25 wherein the user toolbar comprisesan advertisement.
 43. A system for adding functionality to a userinterface displayable on a display of a computing device capable ofcommunicating with the Internet, said system comprising: a server fordownloading files from a predetermined Internet site; a filedownloadable by said server to the computing device for causing thedisplay, within the bounds of the user interface, of an interface objectthat, by virtue of its being downloaded, appears in the user interfacemaking additional functionality that is not part of the user interfaceprior to download available to the user after download, such that oncethe interface object is displayed the interface object remains displayedwithin the bounds of the user interface and said additionalfunctionality remains available to the user regardless of otherfunctionality available to the user via the user interface afterdownload; and wherein said additional functionality is in the form of asearch window in which a search term can be entered to enable a searchto be conducted at the predetermined Internet site regardless of anyother functionality or activity available to the user through said userinterface so as to engender an affinity between said user and a providerof the predetermined Internet site.
 44. A method of controlling anInternet browser interface displayable by an Internet browser on adisplay of a computer, the Internet browser enabling a user of thecomputer and Internet browser to access and navigate the Internet and toreceive and display on the computer display one or more web pages fromone or more Internet sites, including the display of a web page from apredetermined Internet site, the Internet browser having at least oneInternet browser toolbar having at least one toolbar button providing apredetermined functionality to the user of the computer and Internetbrowser, said method comprising the steps of: (a) providing, at thepredetermined Internet site, access to a program for controlling theInternet browser interface; and (b) making available for downloading bythe predetermined Internet site, a file for displaying a user toolbarthat makes additional functionality available to the user as part of theInternet browser interface such that once the user toolbar is displayedthe user toolbar remains displayed and said additional functionalityremains available to the user regardless of the Internet site to whichthe Internet browser is caused to navigate.
 45. A method as recited byclaim 44, wherein the user toolbar includes an interface object and iscustomizable by the user to provide user-selected functionality in theuser toolbar.
 46. A method as recited by claim 44, wherein the filecomprises an ActiveX control.
 47. A method as recited by claim 44,wherein the file comprises a Plug-in.
 48. A method as recited by claim45, wherein the interface object is a toolbar button.
 49. A method asrecited by claim 45, wherein the interface object is a search windowthat enables the user to initiate a search at the predetermined Internetsite regardless of the Internet site to which the computer is connectedvia the browser at the time the search is initiated.
 50. A method asrecited by claim 44, wherein the predetermined Internet site maintainsuser-specific information for a plurality of users, including the userof the computer and Internet browser, said method further comprising thestep of making available for downloading by the predetermined Internetsite, information specific to the user of the computer and Internetbrowser for defining all or part of the user toolbar and wherein all orpart of the display of the user toolbar is dependent upon theinformation, specific to the user of the computer and Internet browser,downloaded by the predetermined Internet site.
 51. A method as recitedby claim 50, further comprising the step of making available fordownloading by the predetermined Internet site, additional information,specific to the user of the computer and Internet browser, for definingall or part of the user toolbar, and wherein all or part of the displayof the user toolbar is dependent upon the downloaded information.
 52. AnInternet browser interface displayable by an Internet browser on adisplay of a computer, the Internet browser facilitating connectionbetween the computer and one or more Internet sites, including apredetermined Internet site, the Internet browser having at least oneInternet browser toolbar having predetermined functionality available toa user of the computer and Internet browser, the Internet browserfurther facilitating display on the computer display of one or more webpages from the one or more Internet sites, including display of webpages from the predetermined Internet site, said Internet browserinterface including a user toolbar that is displayed as part of theInternet browser interface and along with the Internet browser toolbarwhile the Internet browser is activated regardless of the Internet siteto which the computer is connected via the Internet browser.
 53. AnInternet browser interface as recited by claim 52, wherein said usertoolbar includes an interface object and is customizable by the user.54. An Internet browser interface as recited by claim 53, wherein saidinterface object is a toolbar button.
 55. An Internet browser interfaceas recited by claim 53, wherein said interface object is a search windowthat enables the user to initiate a search at the predetermined Internetsite regardless of the Internet site to which the computer is connectedvia the Internet browser at the time the search is initiated.
 56. AnInternet browser interface as recited by claim 53, wherein saidinterface object comprises an ActiveX control that enables usercustomization of said interface object.
 57. An Internet browserinterface as recited by claim 53, wherein said interface objectcomprises a Plug-in control that enables user customization of saidinterface object.
 58. An Internet browser interface as recited by claim53, wherein the predetermined Internet site maintains user-specificinformation for a plurality of users, including the user of the computerand Internet browser, wherein said interface object causes the Internetbrowser to establish a connection to the predetermined Internet sitewhen the Internet browser is first activated and to receive informationspecific to the user of the computer and Internet browser from thepredetermined Internet site, and wherein all or part of said usertoolbar is dependent upon the information, specific to the user of thecomputer and Internet browser, received from the predetermined Internetsite.
 59. An Internet browser interface as recited by claim 58, whereinsaid interface object causes the Internet browser to periodicallyre-establish a connection to the predetermined Internet site while theInternet browser is activated to receive additional information,specific to the user of the computer and Internet browser, from thepredetermined Internet site, and wherein all or part of said usertoolbar is dependent upon the received information and additionalinformation.
 60. A system for controlling an Internet browser interfacedisplayable by an Internet browser on a display of a computer, saidsystem comprising: a server, said server including a program accessibleover the Internet by a user of the computer for controlling the Internetbrowser interface; and a file downloadable by said server to thecomputer for controlling the Internet browser interface in the form ofan added user toolbar offering user toolbar functionality that remainsavailable to a user of the computer regardless of the Internet site towhich the Internet browser is caused to navigate.
 61. A system asrecited by claim 60, wherein said downloadable file causes a usertoolbar to be displayed on the display of the computer as part of theInternet browser interface.
 62. A system as recited by claim 61, whereinsaid downloadable file causes an interface object to be displayed aspart of said user toolbar.
 63. A system as recited by claim 62, whereinsaid interface object enables a user of the computer to customize theuser toolbar and comprises an ActiveX control.
 64. A system as recitedby claim 62, wherein said interface object enables a user of thecomputer to customize the user toolbar and comprises a Plug-in.
 65. Asystem as recited by claim 62, wherein said interface object is atoolbar button.
 66. A system as recited by claim 62, wherein saidinterface object is a search window that enables a user of the computerand Internet browser to initiate a search at a predetermined Internetsite regardless of the Internet site to which the computer is connectedvia the browser at the time the search is initiated.
 67. A system forcontrolling an Internet browser displayable on a display of a computer,said system comprising: a server for downloading files; and a file,downloadable by said server, said file controlling the Internet browserso that the Internet browser enables a user of the computer to performfunctions via the Internet browser not available to the user via theInternet browser prior to said filed being downloaded.
 68. A method asrecited by claim 67, wherein the file is caused to open when theInternet browser is activated so as to establish a link between thecomputer and the predetermined Internet site, and wherein the filereceives information from the predetermined Internet site for definingall or part of an interface object.
 69. A method as recited by claim 68,wherein the file periodically causes the Internet browser to establish alink between the computer and the predetermined Internet site andreceive additional information from the predetermined Internet site fordefining all or part of an interface object.
 70. A system for addingfunctionality to a user interface displayable on a display of acomputing device capable of communicating with the Internet, said systemcomprising: a server, said server comprising a program, accessible overthe Internet by a user of the computing device, for controlling the userinterface; a file downloadable by said server to the computer forcausing the display, within the bounds of the user interface, of aninterface object that, by virtue of its being downloaded, appears in theuser interface making additional functionality that is not part of theuser interface prior to download available to the user after download,such that once the interface object is displayed the interface objectremains displayed within the user interface and said additionalfunctionality remains available to the user regardless of otherfunctionality available to the user via the user interface afterdownload; and wherein said additional functionality is in the form of asearch window in which a search term can be entered to enable a searchto be conducted at a predetermined Internet site regardless of any otherfunctionality or activity available to the user through said userinterface so as to engender an affinity between said user and a providerof said predetermined Internet site.